import request from '../../../utils/request'

Page({
  data: {
    tabs: ["全部", "待支付", "待执行", "已执行", "已完成"],
    currentTab: 0,
    orders: [],
    filteredOrders: [],
    loading: false, // 加载状态
    userId: null // 用户ID
  },

  onLoad(options) {
    // 获取全局用户ID
    const app = getApp();
    const userId = app.globalData.userId || wx.getStorageSync('userId');
    
    if (!userId) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      return;
    }
    
    // 接收tab参数，如果有则切换到对应的tab
    let currentTab = 0; // 默认显示"全部"
    if (options.tab) {
      currentTab = parseInt(options.tab);
      console.log('接收到tab参数：', currentTab);
    }
    
    this.setData({ 
      userId: userId,
      currentTab: currentTab
    });
    
    // 加载订单数据
    this.loadOrders();
  },

  /**
   * 页面显示时刷新数据（从其他页面返回时）
   */
  onShow() {
    // 如果已经加载过（不是第一次进入页面），则刷新数据
    if (this.data.userId) {
      this.loadOrders();
    }
  },

  /**
   * 加载订单数据
   */
  loadOrders() {
    const that = this;
    const { userId, currentTab } = this.data;
    
    // 根据当前Tab获取订单状态
    const orderStatus = this.getOrderStatusByTab(currentTab);
    
    // 显示加载状态
    this.setData({ loading: true });
    wx.showLoading({
      title: '加载中...',
    });
    
    // 构建请求URL
    let url = `/le/management/myOrders?userId=${userId}`;
    if (orderStatus) {
      url += `&orderStatus=${orderStatus}`;
    }
    
    request({
      url: url,
      method: 'GET',
      success: (res) => {
        console.log('订单数据返回：', res);
        wx.hideLoading();
        
        if (res.statusCode === 200 && res.data.code === 200) {
          // 转换数据格式
          const orders = that.formatOrders(res.data.data);
          
          that.setData({
            orders: orders,
            filteredOrders: orders,
            loading: false
          });
        } else {
          that.setData({ loading: false });
          wx.showToast({
            title: res.data.msg || '加载订单失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('加载订单失败：', err);
        wx.hideLoading();
        that.setData({ loading: false });
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 根据Tab索引获取订单状态
   */
  getOrderStatusByTab(tabIndex) {
    const statusMap = {
      0: '', // 全部
      1: '1', // 待支付
      2: '2', // 待执行
      3: '3', // 已执行
      4: '4'  // 已完成
    };
    return statusMap[tabIndex] || '';
  },

  /**
   * 格式化订单数据（后端返回格式转换为页面需要的格式）
   */
  formatOrders(orderList) {
    return orderList.map(item => {
      return {
        id: item.id,
        title: item.serviceName || '暂无服务名称',
        family: item.elderlyName || '未知',
        time: this.formatDateTime(item.serviceTime),
        price: item.price || 0,
        priceLabel: item.priceLabel || '实付款',
        status: item.status,
        statusClass: item.statusClass,
        orderNo: item.orderNo,
        orderStatus: item.orderStatus,
        transactionStatus: item.transactionStatus
      };
    });
  },

  /**
   * 格式化日期时间
   */
  formatDateTime(dateString) {
    if (!dateString) return '';
    
    const date = new Date(dateString);
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const hour = String(date.getHours()).padStart(2, '0');
    const minute = String(date.getMinutes()).padStart(2, '0');
    
    return `${year}.${month}.${day} ${hour}:${minute}`;
  },

  /**
   * 切换Tab
   */
  switchTab(e) {
    const index = e.currentTarget.dataset.index;
    this.setData({ currentTab: index }, () => {
      // 切换Tab时重新加载订单数据
      this.loadOrders();
    });
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.loadOrders();
    setTimeout(() => {
      wx.stopPullDownRefresh();
    }, 1000);
  },

  /**
   * 取消订单 - 跳转到选择原因页面
   */
  cancel(e) {
    const id = e.currentTarget.dataset.id;
    // 跳转到原因选择页面，传递订单ID
    wx.navigateTo({
      url: `/pages/my/yuanyin/yuanyin?orderId=${id}`
    });
  },

  /**
   * 支付订单 - 跳转到支付页面
   */
  pay(e) {
    const id = e.currentTarget.dataset.id;
    // 跳转到支付页面，传递订单ID
    wx.navigateTo({
      url: `/pages/serve/servePay/servePay?orderId=${id}`
    });
  },

  /**
   * 申请退款 - 跳转到原因选择页面
   */
  refund(e) {
    const id = e.currentTarget.dataset.id;
    // 跳转到原因选择页面，传递订单ID和类型
    wx.navigateTo({
      url: `/pages/my/yuanyin/yuanyin?orderId=${id}&type=refund`
    });
  },

  /**
   * 删除订单
   */
  del(e) {
    const id = e.currentTarget.dataset.id;
    wx.showModal({
      title: "提示",
      content: "确定删除该订单？",
      success: res => {
        if (res.confirm) {
          // TODO: 调用后端删除订单接口
          // 暂时只做前端处理
          const newOrders = this.data.filteredOrders.filter(item => item.id !== id);
          this.setData({ filteredOrders: newOrders });
          wx.showToast({ title: "删除成功", icon: "success" });
          
          // 延迟重新加载数据
          setTimeout(() => {
            this.loadOrders();
          }, 1500);
        }
      }
    });
  },

  /**
   * 点击订单查看详情
   */
  goToDetail(e) {
    const id = e.currentTarget.dataset.id;
    // 跳转到订单详情页面，传递订单ID
    wx.navigateTo({
      url: `/pages/my/dingdan/ding1/ding1?orderId=${id}`
    });
  }
});